<!doctype html>
<html lang="en-us">
<head>

    <meta charset="utf-8">
    <meta name="generator" content="Hugo 0.59.1" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>电商管理后台 API 接口文档 | 林贤钦</title>
    <meta property="og:title" content="电商管理后台 API 接口文档 - 林贤钦">
    <meta property="og:type" content="article">
        
    <meta property="article:published_time" content="2019-12-18T14:52:47&#43;08:00">
        
        
    <meta property="article:modified_time" content="2019-12-18T14:52:47&#43;08:00">
        
    <meta name="Keywords" content="java,博客,项目管理,软件架构,公众号,小程序">
    <meta name="description" content="电商管理后台 API 接口文档">
        
    <meta name="author" content="林贤钦">
    <meta property="og:url" content="http://linxianqin.gitee.io/post/%E7%94%B5%E5%95%86%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0-API-%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/">
    <link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon">

    <link rel="stylesheet" href="/css/normalize.css">
    
        <link rel="stylesheet" href="/css/prism.css">
    
    <link rel="stylesheet" href="/css/style.css">
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

    


    
    
</head>

<body>
<header id="header" class="clearfix">
	<div class="container">
        <div class="col-group">
            <div class="site-name ">
                
                    <a id="logo" href="http://linxianqin.gitee.io">
                        林贤钦
                    </a>
                
                <p class="description">专注于Java、微信小程序、移动互联网、项目管理、软件架构</p>
            </div>
            <div>
                <nav id="nav-menu" class="clearfix">
                    <a class="current" href="http://linxianqin.gitee.io">首页</a>
                    
                    <a  href="http://linxianqin.gitee.io/archives/" title="归档">归档</a>
                    
                    <a  href="http://linxianqin.gitee.io/about/" title="关于">关于</a>
                    
                </nav>
            </div>
        </div>
    </div>
</header>


<div id="body">
        
        
    <div class="container">
        <div class="col-group">

            <div class="col-8" id="main">
                <div class="res-cons">
                    <article class="post">
                        <header>
                            <h1 class="post-title">电商管理后台 API 接口文档</h1>
                        </header>
                        <date class="post-meta meta-date">
                            2019年12月18日
                        </date>
                        
                        <div class="post-meta">
                            <span>|</span>
                            
                                <span class="meta-category"><a href="http://linxianqin.gitee.io/categories/java">java</a></span>
                            
                                <span class="meta-category"><a href="http://linxianqin.gitee.io/categories/vue">vue</a></span>
                            
                        </div>
                        
                        
                        <div class="post-meta">
                            <span id="busuanzi_container_page_pv">|<span id="busuanzi_value_page_pv"></span><span> 阅读</span></span>
                        </div>
                        
                        
                        <div class="post-content">
							<nav id="TableOfContents">
<ul>
<li><a href="#1-电商管理后台-api-接口文档">1. 电商管理后台 API 接口文档</a>
<ul>
<li><a href="#1-1-api-v1-接口说明">1.1. API V1 接口说明</a>
<ul>
<li><a href="#1-1-1-支持的请求方法">1.1.1. 支持的请求方法</a></li>
<li><a href="#1-1-2-通用返回状态说明">1.1.2. 通用返回状态说明</a></li>
</ul></li>
<li><a href="#1-2-登录">1.2. 登录</a>
<ul>
<li><a href="#1-2-1-登录验证接口">1.2.1. 登录验证接口</a></li>
</ul></li>
<li><a href="#1-3-用户管理">1.3. 用户管理</a>
<ul>
<li><a href="#1-3-1-用户数据列表">1.3.1. 用户数据列表</a></li>
<li><a href="#1-3-2-添加用户">1.3.2. 添加用户</a></li>
<li><a href="#1-3-3-修改用户状态">1.3.3. 修改用户状态</a></li>
<li><a href="#1-3-4-根据-id-查询用户信息">1.3.4. 根据 ID 查询用户信息</a></li>
<li><a href="#1-3-5-编辑用户提交">1.3.5. 编辑用户提交</a></li>
<li><a href="#1-3-6-删除单个用户">1.3.6. 删除单个用户</a></li>
<li><a href="#1-3-7-分配用户角色">1.3.7. 分配用户角色</a></li>
</ul></li>
<li><a href="#1-4-权限管理">1.4. 权限管理</a>
<ul>
<li><a href="#1-4-1-所有权限列表">1.4.1. 所有权限列表</a></li>
<li><a href="#1-4-2-左侧菜单权限">1.4.2. 左侧菜单权限</a></li>
</ul></li>
<li><a href="#1-5-角色管理">1.5. 角色管理</a>
<ul>
<li><a href="#1-5-1-角色列表">1.5.1. 角色列表</a></li>
<li><a href="#1-5-2-添加角色">1.5.2. 添加角色</a></li>
<li><a href="#1-5-3-根据-id-查询角色">1.5.3. 根据 ID 查询角色</a></li>
<li><a href="#1-5-4-编辑提交角色">1.5.4. 编辑提交角色</a></li>
<li><a href="#1-5-5-删除角色">1.5.5. 删除角色</a></li>
<li><a href="#1-5-6-角色授权">1.5.6. 角色授权</a></li>
<li><a href="#1-5-7-删除角色指定权限">1.5.7. 删除角色指定权限</a></li>
</ul></li>
<li><a href="#1-6-商品分类管理">1.6. 商品分类管理</a>
<ul>
<li><a href="#1-6-1-商品分类数据列表">1.6.1. 商品分类数据列表</a></li>
<li><a href="#1-6-2-添加分类">1.6.2. 添加分类</a></li>
<li><a href="#1-6-3-根据-id-查询分类">1.6.3. 根据 id 查询分类</a></li>
<li><a href="#1-6-4-编辑提交分类">1.6.4. 编辑提交分类</a></li>
<li><a href="#1-6-5-删除分类">1.6.5. 删除分类</a></li>
</ul></li>
<li><a href="#1-7-分类参数管理">1.7. 分类参数管理</a>
<ul>
<li><a href="#1-7-1-参数列表">1.7.1. 参数列表</a></li>
<li><a href="#1-7-2-添加动态参数或者静态属性">1.7.2. 添加动态参数或者静态属性</a></li>
<li><a href="#1-7-3-删除参数">1.7.3. 删除参数</a></li>
<li><a href="#1-7-4-根据-id-查询参数">1.7.4. 根据 ID 查询参数</a></li>
<li><a href="#1-7-5-编辑提交参数">1.7.5. 编辑提交参数</a></li>
</ul></li>
<li><a href="#1-8-商品管理">1.8. 商品管理</a>
<ul>
<li><a href="#1-8-1-商品列表数据">1.8.1. 商品列表数据</a></li>
<li><a href="#1-8-2-添加商品">1.8.2. 添加商品</a></li>
<li><a href="#1-8-3-根据-id-查询商品">1.8.3. 根据 ID 查询商品</a></li>
<li><a href="#1-8-4-编辑提交商品">1.8.4. 编辑提交商品</a></li>
<li><a href="#1-8-5-删除商品">1.8.5. 删除商品</a></li>
</ul></li>
<li><a href="#1-9-图片上传">1.9. 图片上传</a></li>
<li><a href="#1-10-订单管理">1.10. 订单管理</a>
<ul>
<li><a href="#1-10-1-订单数据列表">1.10.1. 订单数据列表</a></li>
<li><a href="#1-10-2-修改订单状态">1.10.2. 修改订单状态</a></li>
<li><a href="#1-10-3-查看订单详情">1.10.3. 查看订单详情</a></li>
<li><a href="#1-10-4-修改地址">1.10.4. 修改地址</a></li>
<li><a href="#1-10-5-查看物流信息">1.10.5. 查看物流信息</a></li>
</ul></li>
<li><a href="#1-11-数据统计">1.11. 数据统计</a>
<ul>
<li><a href="#1-11-1-基于时间统计的折线图">1.11.1.  基于时间统计的折线图</a></li>
</ul></li>
</ul></li>
</ul>
</nav>
                            

<h1 id="1-电商管理后台-api-接口文档">1. 电商管理后台 API 接口文档</h1>

<h2 id="1-1-api-v1-接口说明">1.1. API V1 接口说明</h2>

<ul>
<li>接口基准地址：<code>http://127.0.0.1:8888/api/private/v1/</code></li>
<li>服务端已开启 CORS 跨域支持</li>
<li>API V1 认证统一使用 Token 认证</li>
<li>需要授权的 API ，必须在请求头中使用 <code>Authorization</code> 字段提供 <code>token</code> 令牌</li>
<li>使用 HTTP Status Code 标识状态</li>
<li>数据返回格式统一使用 JSON</li>
</ul>

<h3 id="1-1-1-支持的请求方法">1.1.1. 支持的请求方法</h3>

<ul>
<li>GET（SELECT）：从服务器取出资源（一项或多项）。</li>
<li>POST（CREATE）：在服务器新建一个资源。</li>
<li>PUT（UPDATE）：在服务器更新资源（客户端提供改变后的完整资源）。</li>
<li>PATCH（UPDATE）：在服务器更新资源（客户端提供改变的属性）。</li>
<li>DELETE（DELETE）：从服务器删除资源。</li>
<li>HEAD：获取资源的元数据。</li>
<li>OPTIONS：获取信息，关于资源的哪些属性是客户端可以改变的。</li>
</ul>

<h3 id="1-1-2-通用返回状态说明">1.1.2. 通用返回状态说明</h3>

<table>
<thead>
<tr>
<th><em>状态码</em></th>
<th><em>含义</em></th>
<th><em>说明</em></th>
</tr>
</thead>

<tbody>
<tr>
<td>200</td>
<td>OK</td>
<td>请求成功</td>
</tr>

<tr>
<td>201</td>
<td>CREATED</td>
<td>创建成功</td>
</tr>

<tr>
<td>204</td>
<td>DELETED</td>
<td>删除成功</td>
</tr>

<tr>
<td>400</td>
<td>BAD REQUEST</td>
<td>请求的地址不存在或者包含不支持的参数</td>
</tr>

<tr>
<td>401</td>
<td>UNAUTHORIZED</td>
<td>未授权</td>
</tr>

<tr>
<td>403</td>
<td>FORBIDDEN</td>
<td>被禁止访问</td>
</tr>

<tr>
<td>404</td>
<td>NOT FOUND</td>
<td>请求的资源不存在</td>
</tr>

<tr>
<td>422</td>
<td>Unprocesable entity</td>
<td>[POST/PUT/PATCH] 当创建一个对象时，发生一个验证错误</td>
</tr>

<tr>
<td>500</td>
<td>INTERNAL SERVER ERROR</td>
<td>内部错误</td>
</tr>

<tr>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

<hr />

<h2 id="1-2-登录">1.2. 登录</h2>

<h3 id="1-2-1-登录验证接口">1.2.1. 登录验证接口</h3>

<ul>
<li>请求路径：login</li>
<li>请求方法：post</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>username</td>
<td>用户名</td>
<td>不能为空</td>
</tr>

<tr>
<td>password</td>
<td>密码</td>
<td>不能为空</td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>用户 ID</td>
<td></td>
</tr>

<tr>
<td>rid</td>
<td>用户角色 ID</td>
<td></td>
</tr>

<tr>
<td>username</td>
<td>用户名</td>
<td></td>
</tr>

<tr>
<td>mobile</td>
<td>手机号</td>
<td></td>
</tr>

<tr>
<td>email</td>
<td>邮箱</td>
<td></td>
</tr>

<tr>
<td>token</td>
<td>令牌</td>
<td>基于 jwt 的令牌</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;id&quot;: 500,
    &quot;rid&quot;: 0,
    &quot;username&quot;: &quot;admin&quot;,
    &quot;mobile&quot;: &quot;123&quot;,
    &quot;email&quot;: &quot;123@qq.com&quot;,
    &quot;token&quot;: &quot;Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOjUwMCwicmlkIjowLCJpYXQiOjE1MTI1NDQyOTksImV4cCI6MTUxMjYzMDY5OX0.eGrsrvwHm-tPsO9r_pxHIQ5i5L1kX9RX444uwnRGaIM&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;登录成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h2 id="1-3-用户管理">1.3. 用户管理</h2>

<h3 id="1-3-1-用户数据列表">1.3.1. 用户数据列表</h3>

<ul>
<li>请求路径：users</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>query</td>
<td>查询参数</td>
<td>可以为空</td>
</tr>

<tr>
<td>pagenum</td>
<td>当前页码</td>
<td>不能为空</td>
</tr>

<tr>
<td>pagesize</td>
<td>每页显示条数</td>
<td>不能为空</td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>total</td>
<td>总记录数</td>
<td></td>
</tr>

<tr>
<td>pagenum</td>
<td>当前页码</td>
<td></td>
</tr>

<tr>
<td>users</td>
<td>用户数据集合</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;total&quot;: 5,
    &quot;pagenum&quot;: 1,
    &quot;users&quot;: [
        {
            &quot;id&quot;: 25,
            &quot;username&quot;: &quot;tige117&quot;,
            &quot;mobile&quot;: &quot;18616358651&quot;,
            &quot;type&quot;: 1,
            &quot;email&quot;: &quot;tige112@163.com&quot;,
            &quot;create_time&quot;: &quot;2017-11-09T20:36:26.000Z&quot;,
            &quot;mg_state&quot;: true, // 当前用户的状态
            &quot;role_name&quot;: &quot;炒鸡管理员&quot;
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-3-2-添加用户">1.3.2. 添加用户</h3>

<ul>
<li>请求路径：users</li>
<li>请求方法：post</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>username</td>
<td>用户名称</td>
<td>不能为空</td>
</tr>

<tr>
<td>password</td>
<td>用户密码</td>
<td>不能为空</td>
</tr>

<tr>
<td>email</td>
<td>邮箱</td>
<td>可以为空</td>
</tr>

<tr>
<td>mobile</td>
<td>手机号</td>
<td>可以为空</td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>用户 ID</td>
<td></td>
</tr>

<tr>
<td>rid</td>
<td>用户角色 ID</td>
<td></td>
</tr>

<tr>
<td>username</td>
<td>用户名</td>
<td></td>
</tr>

<tr>
<td>mobile</td>
<td>手机号</td>
<td></td>
</tr>

<tr>
<td>email</td>
<td>邮箱</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;id&quot;: 28,
    &quot;username&quot;: &quot;tige1200&quot;,
    &quot;mobile&quot;: &quot;test&quot;,
    &quot;type&quot;: 1,
    &quot;openid&quot;: &quot;&quot;,
    &quot;email&quot;: &quot;test@test.com&quot;,
    &quot;create_time&quot;: &quot;2017-11-10T03:47:13.533Z&quot;,
    &quot;modify_time&quot;: null,
    &quot;is_delete&quot;: false,
    &quot;is_active&quot;: false
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;用户创建成功&quot;,
    &quot;status&quot;: 201
}
}
</code></pre></li>
</ul>

<h3 id="1-3-3-修改用户状态">1.3.3. 修改用户状态</h3>

<ul>
<li>请求路径：users/:uId/state/:type</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>uId</td>
<td>用户 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>type</td>
<td>用户状态</td>
<td>不能为空<code>携带在url中</code>，值为 true 或者 false</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
&quot;id&quot;: 566,
&quot;rid&quot;: 30,
&quot;username&quot;: &quot;admin&quot;,
&quot;mobile&quot;: &quot;123456&quot;,
&quot;email&quot;: &quot;bb@itcast.com&quot;,
&quot;mg_state&quot;: 0
},
&quot;meta&quot;: {
&quot;msg&quot;: &quot;设置状态成功&quot;,
&quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-3-4-根据-id-查询用户信息">1.3.4. 根据 ID 查询用户信息</h3>

<ul>
<li>请求路径：users/:id</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>用户 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>用户 ID</td>
<td></td>
</tr>

<tr>
<td>role_id</td>
<td>角色 ID</td>
<td></td>
</tr>

<tr>
<td>mobile</td>
<td>手机号</td>
<td></td>
</tr>

<tr>
<td>email</td>
<td>邮箱</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;id&quot;: 503,
    &quot;username&quot;: &quot;admin3&quot;,
    &quot;role_id&quot;: 0,
    &quot;mobile&quot;: &quot;00000&quot;,
    &quot;email&quot;: &quot;new@new.com&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;查询成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-3-5-编辑用户提交">1.3.5. 编辑用户提交</h3>

<ul>
<li>请求路径：users/:id</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>用户 id</td>
<td>不能为空 <code>参数是url参数:id</code></td>
</tr>

<tr>
<td>email</td>
<td>邮箱</td>
<td>可以为空</td>
</tr>

<tr>
<td>mobile</td>
<td>手机号</td>
<td>可以为空</td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>用户 ID</td>
<td></td>
</tr>

<tr>
<td>role_id</td>
<td>角色 ID</td>
<td></td>
</tr>

<tr>
<td>mobile</td>
<td>手机号</td>
<td></td>
</tr>

<tr>
<td>email</td>
<td>邮箱</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">/* 200表示成功，500表示失败 */
{
&quot;data&quot;: {
    &quot;id&quot;: 503,
    &quot;username&quot;: &quot;admin3&quot;,
    &quot;role_id&quot;: 0,
    &quot;mobile&quot;: &quot;111&quot;,
    &quot;email&quot;: &quot;123@123.com&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;更新成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-3-6-删除单个用户">1.3.6. 删除单个用户</h3>

<ul>
<li>请求路径：users/:id</li>
<li>请求方法：delete</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>用户 id</td>
<td>不能为空<code>参数是url参数:id</code></td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>

<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: null,
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;删除成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-3-7-分配用户角色">1.3.7. 分配用户角色</h3>

<ul>
<li>请求路径：users/:id/role</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>用户 ID</td>
<td>不能为空<code>参数是url参数:id</code></td>
</tr>

<tr>
<td>rid</td>
<td>角色 id</td>
<td>不能为空<code>参数body参数</code></td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>用户 ID</td>
<td></td>
</tr>

<tr>
<td>role_id</td>
<td>角色 ID</td>
<td></td>
</tr>

<tr>
<td>mobile</td>
<td>手机号</td>
<td></td>
</tr>

<tr>
<td>email</td>
<td>邮箱</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;id&quot;: 508,
    &quot;rid&quot;: &quot;30&quot;,
    &quot;username&quot;: &quot;asdf1&quot;,
    &quot;mobile&quot;: &quot;123123&quot;,
    &quot;email&quot;: &quot;adfsa@qq.com&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;设置角色成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h2 id="1-4-权限管理">1.4. 权限管理</h2>

<h3 id="1-4-1-所有权限列表">1.4.1. 所有权限列表</h3>

<ul>
<li>请求路径：rights/:type</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>type</td>
<td>类型</td>
<td>值 list 或 tree , list 列表显示权限, tree 树状显示权限,<code>参数是url参数:type</code></td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>权限 ID</td>
<td></td>
</tr>

<tr>
<td>authName</td>
<td>权限说明</td>
<td></td>
</tr>

<tr>
<td>level</td>
<td>权限层级</td>
<td></td>
</tr>

<tr>
<td>pid</td>
<td>权限父 ID</td>
<td></td>
</tr>

<tr>
<td>path</td>
<td>对应访问路径</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据 type=list</p>

<pre><code class="language-json">{
&quot;data&quot;: [
    {
        &quot;id&quot;: 101,
        &quot;authName&quot;: &quot;商品管理&quot;,
        &quot;level&quot;: &quot;0&quot;,
        &quot;pid&quot;: 0,
        &quot;path&quot;: null
    },
    {
        &quot;id&quot;: 102,
        &quot;authName&quot;: &quot;订单管理&quot;,
        &quot;level&quot;: &quot;0&quot;,
        &quot;pid&quot;: 0,
        &quot;path&quot;: null
    }
],
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取权限列表成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<p>type=tree</p>

<pre><code class="language-json">  {
    data: [
      {
        id: 101,
        authName: '商品管理',
        path: null,
        pid: 0,
        children: [
          {
            id: 104,
            authName: '商品列表',
            path: null,
            pid: 101,
            children: [
              {
                id: 105,
                authName: '添加商品',
                path: null,
                pid: '104,101'
              }
            ]
          }
        ]
      }
    ],
    meta: {
      msg: '获取权限列表成功',
      status: 200
    }
  }
</code></pre>

<h3 id="1-4-2-左侧菜单权限">1.4.2. 左侧菜单权限</h3>

<ul>
<li>请求路径：menus</li>
<li>请求方法：get</li>

<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;:
    {
        &quot;id&quot;: 101,
        &quot;authName&quot;: &quot;商品管理&quot;,
        &quot;path&quot;: null,
        &quot;children&quot;: [
            {
                &quot;id&quot;: 104,
                &quot;authName&quot;: &quot;商品列表&quot;,
                &quot;path&quot;: null,
                &quot;children&quot;: []
            }
        ]
    }
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取菜单列表成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h2 id="1-5-角色管理">1.5. 角色管理</h2>

<h3 id="1-5-1-角色列表">1.5.1. 角色列表</h3>

<ul>
<li><p>请求路径：roles</p></li>

<li><p>请求方法：get</p></li>

<li><p>响应数据说明</p>

<ul>
<li><p>第一层为角色信息</p></li>

<li><p>第二层开始为权限说明，权限一共有 3 层权限</p></li>

<li><p>最后一层权限，不包含 <code>children</code> 属性</p></li>
</ul></li>

<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: [
    {
        &quot;id&quot;: 30,
        &quot;roleName&quot;: &quot;主管&quot;,
        &quot;roleDesc&quot;: &quot;技术负责人&quot;,
        &quot;children&quot;: [
            {
                &quot;id&quot;: 101,
                &quot;authName&quot;: &quot;商品管理&quot;,
                &quot;path&quot;: null,
                &quot;children&quot;: [
                    {
                        &quot;id&quot;: 104,
                        &quot;authName&quot;: &quot;商品列表&quot;,
                        &quot;path&quot;: null,
                        &quot;children&quot;: [
                            {
                                &quot;id&quot;: 105,
                                &quot;authName&quot;: &quot;添加商品&quot;,
                                &quot;path&quot;: null
                            }
                        ]
                    }
                ]
            }
        ]
    }
],
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-5-2-添加角色">1.5.2. 添加角色</h3>

<ul>
<li>请求路径：roles</li>
<li>请求方法：post</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>roleName</td>
<td>角色名称</td>
<td>不能为空</td>
</tr>

<tr>
<td>roleDesc</td>
<td>角色描述</td>
<td>可以为空</td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>roleId</td>
<td>角色 ID</td>
<td></td>
</tr>

<tr>
<td>roleName</td>
<td>角色名称</td>
<td></td>
</tr>

<tr>
<td>roleDesc</td>
<td>角色描述</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;roleId&quot;: 40,
    &quot;roleName&quot;: &quot;admin2&quot;,
    &quot;roleDesc&quot;: &quot;admin2Desc&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;创建成功&quot;,
    &quot;status&quot;: 201
}
}
</code></pre></li>
</ul>

<h3 id="1-5-3-根据-id-查询角色">1.5.3. 根据 ID 查询角色</h3>

<ul>
<li>请求路径：roles/:id</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>角色 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>roleId</td>
<td>角色 ID</td>
<td></td>
</tr>

<tr>
<td>roleName</td>
<td>角色名称</td>
<td></td>
</tr>

<tr>
<td>roleDesc</td>
<td>角色描述</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;roleId&quot;: 31,
    &quot;roleName&quot;: &quot;测试角色&quot;,
    &quot;roleDesc&quot;: &quot;测试负责人&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-5-4-编辑提交角色">1.5.4. 编辑提交角色</h3>

<ul>
<li>请求路径：roles/:id</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>角色 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>roleName</td>
<td>角色名称</td>
<td>不能为空</td>
</tr>

<tr>
<td>roleDesc</td>
<td>角色描述</td>
<td>可以为空</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;roleId&quot;: 31,
    &quot;roleName&quot;: &quot;测试角色&quot;,
    &quot;roleDesc&quot;: &quot;测试角色描述&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-5-5-删除角色">1.5.5. 删除角色</h3>

<ul>
<li>请求路径：roles/:id</li>
<li>请求方法：delete</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>角色 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: null,
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;删除成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-5-6-角色授权">1.5.6. 角色授权</h3>

<ul>
<li>请求路径：roles/:roleId/rights</li>
<li>请求方法：post</li>
<li>请求参数：通过 <code>请求体</code> 发送给后端</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:roleId</td>
<td>角色 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>rids</td>
<td>权限 ID 列表（字符串）</td>
<td>以 <code>,</code> 分割的权限 ID 列表（获取所有被选中、叶子节点的key和半选中节点的key, 包括 1，2，3级节点）</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: null,
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;更新成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-5-7-删除角色指定权限">1.5.7. 删除角色指定权限</h3>

<ul>
<li><p>请求路径：roles/:roleId/rights/:rightId</p></li>

<li><p>请求方法：delete</p></li>

<li><p>请求参数</p></li>
</ul>

<p>| 参数名   | 参数说明 | 备注                  |
  | &mdash;&mdash;&ndash; | &mdash;&mdash;&ndash; | &mdash;&mdash;&mdash;&mdash;&mdash;&mdash;&mdash; |
  | :roleId  | 角色 ID  | 不能为空<code>携带在url中</code> |
  | :rightId | 权限 ID  | 不能为空<code>携带在url中</code> |</p>

<ul>
<li><p>响应数据说明</p>

<ul>
<li>返回的data, 是当前角色下最新的权限数据</li>
</ul></li>

<li><p>响应数据</p>

<pre><code class="language-json">{
  &quot;data&quot;: [
      {
          &quot;id&quot;: 101,
          &quot;authName&quot;: &quot;商品管理&quot;,
          &quot;path&quot;: null,
          &quot;children&quot;: [
              {
                  &quot;id&quot;: 104,
                  &quot;authName&quot;: &quot;商品列表&quot;,
                  &quot;path&quot;: null,
                  &quot;children&quot;: [
                      {
                          &quot;id&quot;: 105,
                          &quot;authName&quot;: &quot;添加商品&quot;,
                          &quot;path&quot;: null
                      },
                      {
                          &quot;id&quot;: 116,
                          &quot;authName&quot;: &quot;修改&quot;,
                          &quot;path&quot;: null
                      }
                  ]
              }
          ]
      }
  ],
  &quot;meta&quot;: {
      &quot;msg&quot;: &quot;取消权限成功&quot;,
      &quot;status&quot;: 200
  }
}
</code></pre></li>
</ul>

<h2 id="1-6-商品分类管理">1.6. 商品分类管理</h2>

<h3 id="1-6-1-商品分类数据列表">1.6.1. 商品分类数据列表</h3>

<ul>
<li>请求路径：categories</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>type</td>
<td>[1,2,3]</td>
<td>值：1，2，3 分别表示显示一层二层三层分类列表<br />【可选参数】如果不传递，则默认获取所有级别的分类</td>
</tr>

<tr>
<td>pagenum</td>
<td>当前页码值</td>
<td>【可选参数】如果不传递，则默认获取所有分类</td>
</tr>

<tr>
<td>pagesize</td>
<td>每页显示多少条数据</td>
<td>【可选参数】如果不传递，则默认获取所有分类</td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>cat_id</td>
<td>分类 ID</td>
<td></td>
</tr>

<tr>
<td>cat_name</td>
<td>分类名称</td>
<td></td>
</tr>

<tr>
<td>cat_pid</td>
<td>分类父 ID</td>
<td></td>
</tr>

<tr>
<td>cat_level</td>
<td>分类当前层级</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: [
    {
        &quot;cat_id&quot;: 1,
        &quot;cat_name&quot;: &quot;大家电&quot;,
        &quot;cat_pid&quot;: 0,
        &quot;cat_level&quot;: 0,
        &quot;cat_deleted&quot;: false,
        &quot;children&quot;: [
            {
                &quot;cat_id&quot;: 3,
                &quot;cat_name&quot;: &quot;电视&quot;,
                &quot;cat_pid&quot;: 1,
                &quot;cat_level&quot;: 1,
                &quot;cat_deleted&quot;: false,
                &quot;children&quot;: [
                    {
                        &quot;cat_id&quot;: 6,
                        &quot;cat_name&quot;: &quot;曲面电视&quot;,
                        &quot;cat_pid&quot;: 3,
                        &quot;cat_level&quot;: 2,
                        &quot;cat_deleted&quot;: false
                    },
                    {
                        &quot;cat_id&quot;: 7,
                        &quot;cat_name&quot;: &quot;海信&quot;,
                        &quot;cat_pid&quot;: 3,
                        &quot;cat_level&quot;: 2,
                        &quot;cat_deleted&quot;: false
                    }
                ]
            }
        ]
    }
],
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-6-2-添加分类">1.6.2. 添加分类</h3>

<ul>
<li>请求路径：categories</li>
<li>请求方法：post</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>cat_pid</td>
<td>分类父 ID</td>
<td>不能为空，如果要添加1级分类，则父分类Id应该设置为  <code>0</code></td>
</tr>

<tr>
<td>cat_name</td>
<td>分类名称</td>
<td>不能为空</td>
</tr>

<tr>
<td>cat_level</td>
<td>分类层级</td>
<td>不能为空，<code>0</code>表示一级分类；<code>1</code>表示二级分类；<code>2</code>表示三级分类</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;cat_id&quot;: 62,
    &quot;cat_name&quot;: &quot;相框&quot;,
    &quot;cat_pid&quot;: &quot;1&quot;,
    &quot;cat_level&quot;: &quot;1&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;创建成功&quot;,
    &quot;status&quot;: 201
}
}
</code></pre></li>
</ul>

<h3 id="1-6-3-根据-id-查询分类">1.6.3. 根据 id 查询分类</h3>

<ul>
<li>请求路径：categories/:id</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>分类 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;cat_id&quot;: 3,
    &quot;cat_name&quot;: &quot;厨卫电器&quot;,
    &quot;cat_pid&quot;: 0,
    &quot;cat_level&quot;: 0
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-6-4-编辑提交分类">1.6.4. 编辑提交分类</h3>

<ul>
<li>请求路径：categories/:id</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>分类 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>cat_name</td>
<td>分类名称</td>
<td>不能为空【此参数，放到请求体中】</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;cat_id&quot;: 22,
    &quot;cat_name&quot;: &quot;自拍杆&quot;,
    &quot;cat_pid&quot;: 7,
    &quot;cat_level&quot;: 2
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;更新成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-6-5-删除分类">1.6.5. 删除分类</h3>

<ul>
<li>请求路径：categories/:id</li>
<li>请求方法：delete</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>分类 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: null,
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;删除成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h2 id="1-7-分类参数管理">1.7. 分类参数管理</h2>

<h3 id="1-7-1-参数列表">1.7.1. 参数列表</h3>

<ul>
<li>请求路径：categories/:id/attributes</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>分类 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>sel</td>
<td>[only,many]</td>
<td>不能为空,通过 only 或 many 来获取分类静态参数还是动态参数</td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>attr_id</td>
<td>分类参数 ID</td>
<td></td>
</tr>

<tr>
<td>attr_name</td>
<td>分类参数名称</td>
<td></td>
</tr>

<tr>
<td>cat_id</td>
<td>分类参数所属分类</td>
<td></td>
</tr>

<tr>
<td>attr_sel</td>
<td>only:输入框(唯一) many:后台下拉列表/前台单选框</td>
<td></td>
</tr>

<tr>
<td>attr_write</td>
<td>manual:手工录入 list:从列表选择</td>
<td></td>
</tr>

<tr>
<td>attr_vals</td>
<td>如果 attr_write:list,那么有值，该值以逗号分隔</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: [
    {
        &quot;attr_id&quot;: 1,
        &quot;attr_name&quot;: &quot;cpu&quot;,
        &quot;cat_id&quot;: 22,
        &quot;attr_sel&quot;: &quot;only&quot;,
        &quot;attr_write&quot;: &quot;manual&quot;,
        &quot;attr_vals&quot;: &quot;ffff&quot;
    }
],
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-7-2-添加动态参数或者静态属性">1.7.2. 添加动态参数或者静态属性</h3>

<ul>
<li>请求路径：categories/:id/attributes</li>
<li>请求方法：post</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>分类 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>attr_name</td>
<td>参数名称</td>
<td>不能为空</td>
</tr>

<tr>
<td>attr_sel</td>
<td>[only,many]</td>
<td>不能为空</td>
</tr>

<tr>
<td>attr_vals</td>
<td>如果是 many 就需要填写值的选项，以逗号分隔</td>
<td>【可选参数】</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;attr_id&quot;: 44,
    &quot;attr_name&quot;: &quot;测试参数&quot;,
    &quot;cat_id&quot;: &quot;1&quot;,
    &quot;attr_sel&quot;: &quot;many&quot;,
    &quot;attr_write&quot;: &quot;list&quot;,
    &quot;attr_vals&quot;: &quot;a,b,c&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;创建成功&quot;,
    &quot;status&quot;: 201
}
}
</code></pre></li>
</ul>

<h3 id="1-7-3-删除参数">1.7.3. 删除参数</h3>

<ul>
<li>请求路径： categories/:id/attributes/:attrid</li>
<li>请求方法：delete</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>分类 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>:attrid</td>
<td>参数 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: null,
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;删除成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-7-4-根据-id-查询参数">1.7.4. 根据 ID 查询参数</h3>

<ul>
<li>请求路径：categories/:id/attributes/:attrId</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>分类 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>:attrId</td>
<td>属性 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>attr_sel</td>
<td>[only,many]</td>
<td>不能为空</td>
</tr>

<tr>
<td>attr_vals</td>
<td>如果是 many 就需要填写值的选项，以逗号分隔</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;attr_id&quot;: 1,
    &quot;attr_name&quot;: &quot;cpu&quot;,
    &quot;cat_id&quot;: 22,
    &quot;attr_sel&quot;: &quot;only&quot;,
    &quot;attr_write&quot;: &quot;manual&quot;,
    &quot;attr_vals&quot;: &quot;ffff&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-7-5-编辑提交参数">1.7.5. 编辑提交参数</h3>

<ul>
<li>请求路径：categories/:id/attributes/:attrId</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>:id</td>
<td>分类 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>:attrId</td>
<td>属性 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>attr_name</td>
<td>新属性的名字</td>
<td>不能为空，携带在<code>请求体</code>中</td>
</tr>

<tr>
<td>attr_sel</td>
<td>属性的类型[many或only]</td>
<td>不能为空，携带在<code>请求体</code>中</td>
</tr>

<tr>
<td>attr_vals</td>
<td>参数的属性值</td>
<td>可选参数，携带在<code>请求体</code>中</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;attr_id&quot;: 9,
    &quot;attr_name&quot;: &quot;测试更新&quot;,
    &quot;cat_id&quot;: &quot;43&quot;,
    &quot;attr_sel&quot;: &quot;only&quot;,
    &quot;attr_write&quot;: &quot;manual&quot;,
    &quot;attr_vals&quot;: &quot;abc&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;更新成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h2 id="1-8-商品管理">1.8. 商品管理</h2>

<h3 id="1-8-1-商品列表数据">1.8.1. 商品列表数据</h3>

<ul>
<li>请求路径：goods</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>query</td>
<td>查询参数</td>
<td>可以为空</td>
</tr>

<tr>
<td>pagenum</td>
<td>当前页码</td>
<td>不能为空</td>
</tr>

<tr>
<td>pagesize</td>
<td>每页显示条数</td>
<td>不能为空</td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>total</td>
<td>总共商品条数</td>
<td></td>
</tr>

<tr>
<td>pagenum</td>
<td>当前商品页数</td>
<td></td>
</tr>

<tr>
<td>goods_id</td>
<td>商品 ID</td>
<td></td>
</tr>

<tr>
<td>goods_name</td>
<td>商品名称</td>
<td></td>
</tr>

<tr>
<td>goods_price</td>
<td>价格</td>
<td></td>
</tr>

<tr>
<td>goods_number</td>
<td>数量</td>
<td></td>
</tr>

<tr>
<td>goods_weight</td>
<td>重量</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_state</td>
<td>商品状态</td>
<td>商品状态 0: 未通过 1: 审核中 2: 已审核</td>
</tr>

<tr>
<td>add_time</td>
<td>添加时间</td>
<td></td>
</tr>

<tr>
<td>upd_time</td>
<td>更新时间</td>
<td></td>
</tr>

<tr>
<td>hot_mumber</td>
<td>热销品数量</td>
<td></td>
</tr>

<tr>
<td>is_promote</td>
<td>是否是热销品</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;total&quot;: 50,
    &quot;pagenum&quot;: &quot;1&quot;,
    &quot;goods&quot;: [
        {
            &quot;goods_id&quot;: 144,
            &quot;goods_name&quot;: &quot;asfdsd&quot;,
            &quot;goods_price&quot;: 1,
            &quot;goods_number&quot;: 1,
            &quot;goods_weight&quot;: 1,
            &quot;goods_state&quot;: null,
            &quot;add_time&quot;: 1512954923,
            &quot;upd_time&quot;: 1512954923,
            &quot;hot_mumber&quot;: 0,
            &quot;is_promote&quot;: false
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-8-2-添加商品">1.8.2. 添加商品</h3>

<ul>
<li>请求路径：goods</li>
<li>请求方法：post</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>goods_name</td>
<td>商品名称</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_cat</td>
<td>以为&rsquo;,&lsquo;分割的分类列表</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_price</td>
<td>价格</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_number</td>
<td>数量</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_weight</td>
<td>重量</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_introduce</td>
<td>介绍</td>
<td>可以为空</td>
</tr>

<tr>
<td>pics</td>
<td>上传的图片临时路径（对象）</td>
<td>可以为空</td>
</tr>

<tr>
<td>attrs</td>
<td>商品的参数（数组），包含 <code>动态参数</code> 和 <code>静态属性</code></td>
<td>可以为空</td>
</tr>
</tbody>
</table>

<ul>
<li><p>请求数据</p>

<pre><code class="language-json">{
&quot;goods_name&quot;:&quot;test_goods_name2&quot;,
&quot;goods_cat&quot;: &quot;1,2,3&quot;,
&quot;goods_price&quot;:20,
&quot;goods_number&quot;:30,
&quot;goods_weight&quot;:40,
&quot;goods_introduce&quot;:&quot;abc&quot;,
&quot;pics&quot;:[
{&quot;pic&quot;:&quot;/tmp_uploads/30f08d52c551ecb447277eae232304b8&quot;}
],
&quot;attrs&quot;:[
{
  &quot;attr_id&quot;:15,
  &quot;attr_value&quot;:&quot;ddd&quot;
},
{
  &quot;attr_id&quot;:15,
  &quot;attr_value&quot;:&quot;eee&quot;
}
]
}
</code></pre></li>

<li><p>响应参数</p></li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>total</td>
<td>总共商品条数</td>
<td></td>
</tr>

<tr>
<td>pagenum</td>
<td>当前商品页数</td>
<td></td>
</tr>

<tr>
<td>goods_id</td>
<td>商品 ID</td>
<td></td>
</tr>

<tr>
<td>goods_cat</td>
<td>以为&rsquo;,&lsquo;分割的分类列表</td>
<td></td>
</tr>

<tr>
<td>goods_name</td>
<td>商品名称</td>
<td></td>
</tr>

<tr>
<td>goods_price</td>
<td>价格</td>
<td></td>
</tr>

<tr>
<td>goods_number</td>
<td>数量</td>
<td></td>
</tr>

<tr>
<td>goods_weight</td>
<td>重量</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_state</td>
<td>商品状态</td>
<td>商品状态 0: 未通过 1: 审核中 2: 已审核</td>
</tr>

<tr>
<td>add_time</td>
<td>添加时间</td>
<td></td>
</tr>

<tr>
<td>upd_time</td>
<td>更新时间</td>
<td></td>
</tr>

<tr>
<td>hot_mumber</td>
<td>热销品数量</td>
<td></td>
</tr>

<tr>
<td>is_promote</td>
<td>是否是热销品</td>
<td></td>
</tr>

<tr>
<td>pics</td>
<td>上传的图片临时路径（对象）</td>
<td>pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图</td>
</tr>

<tr>
<td>attrs</td>
<td>商品的参数（数组）</td>
<td>goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入，还是单选,</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code class="language-json">{
&quot;data&quot;: {
    &quot;goods_id&quot;: 145,
    &quot;goods_name&quot;: &quot;test_goods_name2&quot;,
    &quot;goods_price&quot;: 20,
    &quot;cat_id&quot;: 1,
    &quot;goods_number&quot;: 30,
    &quot;goods_weight&quot;: 40,
    &quot;goods_introduce&quot;: &quot;abc&quot;,
    &quot;goods_big_logo&quot;: &quot;&quot;,
    &quot;goods_small_logo&quot;: &quot;&quot;,
    &quot;goods_state&quot;: 1,
    &quot;add_time&quot;: 1512962370,
    &quot;upd_time&quot;: 1512962370,
    &quot;hot_mumber&quot;: 0,
    &quot;is_promote&quot;: false,
    &quot;pics&quot;: [
        {
            &quot;pics_id&quot;: 397,
            &quot;goods_id&quot;: 145,
            &quot;pics_big&quot;: &quot;uploads/goodspics/big_30f08d52c551ecb447277eae232304b8&quot;,
            &quot;pics_mid&quot;: &quot;uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8&quot;,
            &quot;pics_sma&quot;: &quot;uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8&quot;
        }
    ],
    &quot;attrs&quot;: [
        {
            &quot;goods_id&quot;: 145,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;ddd&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        },
        {
            &quot;goods_id&quot;: 145,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;eee&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;创建商品成功&quot;,
    &quot;status&quot;: 201
}
}
</code></pre></li>
</ul>

<h3 id="1-8-3-根据-id-查询商品">1.8.3. 根据 ID 查询商品</h3>

<ul>
<li>请求路径：goods/:id</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>商品 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li>响应参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>total</td>
<td>总共商品条数</td>
<td></td>
</tr>

<tr>
<td>pagenum</td>
<td>当前商品页数</td>
<td></td>
</tr>

<tr>
<td>goods_id</td>
<td>商品 ID</td>
<td></td>
</tr>

<tr>
<td>goods_name</td>
<td>商品名称</td>
<td></td>
</tr>

<tr>
<td>goods_price</td>
<td>价格</td>
<td></td>
</tr>

<tr>
<td>goods_number</td>
<td>数量</td>
<td></td>
</tr>

<tr>
<td>goods_weight</td>
<td>重量</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_state</td>
<td>商品状态</td>
<td>商品状态 0: 未通过 1: 审核中 2: 已审核</td>
</tr>

<tr>
<td>add_time</td>
<td>添加时间</td>
<td></td>
</tr>

<tr>
<td>upd_time</td>
<td>更新时间</td>
<td></td>
</tr>

<tr>
<td>hot_mumber</td>
<td>热销品数量</td>
<td></td>
</tr>

<tr>
<td>is_promote</td>
<td>是否是热销品</td>
<td></td>
</tr>

<tr>
<td>pics</td>
<td>上传的图片临时路径（对象）</td>
<td>pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图</td>
</tr>

<tr>
<td>attrs</td>
<td>商品的参数（数组）</td>
<td>goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入，还是单选,</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;goods_id&quot;: 145,
    &quot;goods_name&quot;: &quot;test_goods_name2&quot;,
    &quot;goods_price&quot;: 20,
    &quot;goods_number&quot;: 30,
    &quot;goods_weight&quot;: 40,
    &quot;goods_introduce&quot;: &quot;abc&quot;,
    &quot;goods_big_logo&quot;: &quot;&quot;,
    &quot;goods_small_logo&quot;: &quot;&quot;,
    &quot;goods_state&quot;: 1,
    &quot;add_time&quot;: 1512962370,
    &quot;upd_time&quot;: 1512962370,
    &quot;hot_mumber&quot;: 0,
    &quot;is_promote&quot;: false,
    &quot;pics&quot;: [
        {
            &quot;pics_id&quot;: 397,
            &quot;goods_id&quot;: 145,
            &quot;pics_big&quot;: &quot;uploads/goodspics/big_30f08d52c551ecb447277eae232304b8&quot;,
            &quot;pics_mid&quot;: &quot;uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8&quot;,
            &quot;pics_sma&quot;: &quot;uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8&quot;
        }
    ],
    &quot;attrs&quot;: [
        {
            &quot;goods_id&quot;: 145,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;ddd&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        },
        {
            &quot;goods_id&quot;: 145,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;eee&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;创建商品成功&quot;,
    &quot;status&quot;: 201
}
}
</code></pre></li>
</ul>

<h3 id="1-8-4-编辑提交商品">1.8.4. 编辑提交商品</h3>

<ul>
<li>请求路径：goods/:id</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>商品 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>goods_name</td>
<td>商品名称</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_price</td>
<td>价格</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_number</td>
<td>数量</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_weight</td>
<td>重量</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_introduce</td>
<td>介绍</td>
<td>可以为空</td>
</tr>

<tr>
<td>pics</td>
<td>上传的图片临时路径（对象）</td>
<td>可以为空</td>
</tr>

<tr>
<td>attrs</td>
<td>商品的参数（数组）</td>
<td>可以为空</td>
</tr>
</tbody>
</table>

<ul>
<li><p>请求数据</p>

<pre><code>{
&quot;goods_name&quot;:&quot;test_goods_name2&quot;,
&quot;goods_price&quot;:20,
&quot;goods_number&quot;:30,
&quot;goods_weight&quot;:40,
&quot;goods_introduce&quot;:&quot;abc&quot;,
&quot;pics&quot;:[
{&quot;pic&quot;:&quot;/tmp_uploads/30f08d52c551ecb447277eae232304b8&quot;}
],
&quot;attrs&quot;:[
{
  &quot;attr_id&quot;:15,
  &quot;attr_value&quot;:&quot;ddd&quot;
},
{
  &quot;attr_id&quot;:15,
  &quot;attr_value&quot;:&quot;eee&quot;
}
]
}
</code></pre></li>

<li><p>响应参数</p></li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>total</td>
<td>总共商品条数</td>
<td></td>
</tr>

<tr>
<td>pagenum</td>
<td>当前商品页数</td>
<td></td>
</tr>

<tr>
<td>goods_id</td>
<td>商品 ID</td>
<td></td>
</tr>

<tr>
<td>goods_name</td>
<td>商品名称</td>
<td></td>
</tr>

<tr>
<td>goods_price</td>
<td>价格</td>
<td></td>
</tr>

<tr>
<td>goods_number</td>
<td>数量</td>
<td></td>
</tr>

<tr>
<td>goods_weight</td>
<td>重量</td>
<td>不能为空</td>
</tr>

<tr>
<td>goods_state</td>
<td>商品状态</td>
<td>商品状态 0: 未通过 1: 审核中 2: 已审核</td>
</tr>

<tr>
<td>add_time</td>
<td>添加时间</td>
<td></td>
</tr>

<tr>
<td>upd_time</td>
<td>更新时间</td>
<td></td>
</tr>

<tr>
<td>hot_mumber</td>
<td>热销品数量</td>
<td></td>
</tr>

<tr>
<td>is_promote</td>
<td>是否是热销品</td>
<td></td>
</tr>

<tr>
<td>pics</td>
<td>上传的图片临时路径（对象）</td>
<td>pics_id:图片 ID,goods_id:商品 ID,pics_big:大图,pics_mid:中图,pics_sma:小图</td>
</tr>

<tr>
<td>attrs</td>
<td>商品的参数（数组）</td>
<td>goods_id:商品 ID,attr_value:当前商品的参数值,add_price:浮动价格,attr_vals:预定义的参数值,attr_sel:手动输入，还是单选,</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;goods_id&quot;: 145,
    &quot;goods_name&quot;: &quot;test_goods_name2&quot;,
    &quot;goods_price&quot;: 20,
    &quot;goods_number&quot;: 30,
    &quot;goods_weight&quot;: 40,
    &quot;goods_introduce&quot;: &quot;abc&quot;,
    &quot;goods_big_logo&quot;: &quot;&quot;,
    &quot;goods_small_logo&quot;: &quot;&quot;,
    &quot;goods_state&quot;: 1,
    &quot;add_time&quot;: 1512962370,
    &quot;upd_time&quot;: 1512962370,
    &quot;hot_mumber&quot;: 0,
    &quot;is_promote&quot;: false,
    &quot;pics&quot;: [
        {
            &quot;pics_id&quot;: 397,
            &quot;goods_id&quot;: 145,
            &quot;pics_big&quot;: &quot;uploads/goodspics/big_30f08d52c551ecb447277eae232304b8&quot;,
            &quot;pics_mid&quot;: &quot;uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8&quot;,
            &quot;pics_sma&quot;: &quot;uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8&quot;
        }
    ],
    &quot;attrs&quot;: [
        {
            &quot;goods_id&quot;: 145,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;ddd&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        },
        {
            &quot;goods_id&quot;: 145,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;eee&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;创建商品成功&quot;,
    &quot;status&quot;: 201
}
}
</code></pre></li>
</ul>

<h3 id="1-8-5-删除商品">1.8.5. 删除商品</h3>

<ul>
<li>请求路径：goods/:id</li>
<li>请求方法：delete</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>商品 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: null,
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;删除成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<p>###同步商品图片</p>

<ul>
<li>请求路径：goods/:id/pics</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>商品 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>pics</td>
<td>商品图片集合</td>
<td>如果有 pics_id 字段会保留该图片，如果没有 pics_id 但是有 pic 字段就会新生成图片数据</td>
</tr>
</tbody>
</table>

<ul>
<li><p>请求数据</p>

<pre><code>;[
{ pic: 'tmp_uploads/db28f6316835836e97653b5c75e418be.png' },
{
pics_id: 397,
goods_id: 145,
pics_big: 'uploads/goodspics/big_30f08d52c551ecb447277eae232304b8',
pics_mid: 'uploads/goodspics/mid_30f08d52c551ecb447277eae232304b8',
pics_sma: 'uploads/goodspics/sma_30f08d52c551ecb447277eae232304b8'
}
]
</code></pre></li>

<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;goods_id&quot;: 96,
    &quot;goods_name&quot;: &quot;iphoneXX&quot;,
    &quot;goods_price&quot;: 2,
    &quot;goods_number&quot;: 22,
    &quot;goods_weight&quot;: 22,
    &quot;goods_introduce&quot;: null,
    &quot;goods_big_logo&quot;: &quot;./uploads/goods/20171113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg&quot;,
    &quot;goods_small_logo&quot;: &quot;./uploads/goods/20171113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg&quot;,
    &quot;goods_state&quot;: 0,
    &quot;is_del&quot;: &quot;1&quot;,
    &quot;add_time&quot;: 1510045904,
    &quot;upd_time&quot;: 1512635159,
    &quot;delete_time&quot;: 1512635159,
    &quot;hot_mumber&quot;: 0,
    &quot;is_promote&quot;: false,
    &quot;pics&quot;: [
        {
            &quot;pics_id&quot;: 383,
            &quot;goods_id&quot;: 96,
            &quot;pics_big&quot;: &quot;uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg&quot;,
            &quot;pics_mid&quot;: &quot;uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg&quot;,
            &quot;pics_sma&quot;: &quot;uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg&quot;
        }
    ],
    &quot;attrs&quot;: [
        {
            &quot;goods_id&quot;: 96,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;eee&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        },
        {
            &quot;goods_id&quot;: 96,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;ddd&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;更新成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<p>###同步商品属性</p>

<ul>
<li>请求路径：goods/:id/attributes</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>商品 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li><p>请求数据</p>

<pre><code>;[
{
attr_id: 15,
attr_value: 'ddd'
},
{
attr_id: 15,
attr_value: 'eee'
}
]
</code></pre></li>

<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;goods_id&quot;: 96,
    &quot;goods_name&quot;: &quot;iphoneXX&quot;,
    &quot;goods_price&quot;: 2,
    &quot;goods_number&quot;: 22,
    &quot;goods_weight&quot;: 22,
    &quot;goods_introduce&quot;: null,
    &quot;goods_big_logo&quot;: &quot;./uploads/goods/20171113/483a3b8e99e534ec3e4312dbbaee7c9d.jpg&quot;,
    &quot;goods_small_logo&quot;: &quot;./uploads/goods/20171113/small_483a3b8e99e534ec3e4312dbbaee7c9d.jpg&quot;,
    &quot;goods_state&quot;: 0,
    &quot;is_del&quot;: &quot;1&quot;,
    &quot;add_time&quot;: 1510045904,
    &quot;upd_time&quot;: 1512635159,
    &quot;delete_time&quot;: 1512635159,
    &quot;hot_mumber&quot;: 0,
    &quot;is_promote&quot;: false,
    &quot;pics&quot;: [
        {
            &quot;pics_id&quot;: 383,
            &quot;goods_id&quot;: 96,
            &quot;pics_big&quot;: &quot;uploads/goodspics/big_6f5750132abd3f5b2b93dd722fcde653.jpg&quot;,
            &quot;pics_mid&quot;: &quot;uploads/goodspics/mid_6f5750132abd3f5b2b93dd722fcde653.jpg&quot;,
            &quot;pics_sma&quot;: &quot;uploads/goodspics/sma_6f5750132abd3f5b2b93dd722fcde653.jpg&quot;
        }
    ],
    &quot;attrs&quot;: [
        {
            &quot;goods_id&quot;: 96,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;eee&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        },
        {
            &quot;goods_id&quot;: 96,
            &quot;attr_id&quot;: 15,
            &quot;attr_value&quot;: &quot;ddd&quot;,
            &quot;add_price&quot;: null,
            &quot;attr_name&quot;: &quot;fffffff&quot;,
            &quot;attr_sel&quot;: &quot;many&quot;,
            &quot;attr_write&quot;: &quot;list&quot;,
            &quot;attr_vals&quot;: &quot;&quot;
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;更新成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<p>###商品图片处理必须安装 GraphicsMagick</p>

<ul>
<li><p>linux</p>

<pre><code>apt-get install GraphicsMagick
</code></pre></li>

<li><p>Mac OS X</p>

<pre><code>brew install GraphicsMagick
</code></pre></li>

<li><p>Windows <a href="https://sourceforge.net/projects/graphicsmagick/files/graphicsmagick-binaries/1.3.27/GraphicsMagick-1.3.27-Q8-win64-dll.exe/download">点击下载</a></p></li>
</ul>

<h2 id="1-9-图片上传">1.9. 图片上传</h2>

<ul>
<li>请求路径：upload</li>
<li>请求方法：post</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>file</td>
<td>上传文件</td>
<td></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;tmp_path&quot;: &quot;tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png&quot;,
    &quot;url&quot;: &quot;http://127.0.0.1:8888tmp_uploads/ccfc5179a914e94506bcbb7377e8985f.png&quot;
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;上传成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h2 id="1-10-订单管理">1.10. 订单管理</h2>

<h3 id="1-10-1-订单数据列表">1.10.1. 订单数据列表</h3>

<ul>
<li>请求路径：orders</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>query</td>
<td>查询参数</td>
<td>可以为空</td>
</tr>

<tr>
<td>pagenum</td>
<td>当前页码</td>
<td>不能为空</td>
</tr>

<tr>
<td>pagesize</td>
<td>每页显示条数</td>
<td>不能为空</td>
</tr>

<tr>
<td>user_id</td>
<td>用户 ID</td>
<td>可以为空</td>
</tr>

<tr>
<td>pay_status</td>
<td>支付状态</td>
<td>可以为空</td>
</tr>

<tr>
<td>is_send</td>
<td>是否发货</td>
<td>可以为空</td>
</tr>

<tr>
<td>order_fapiao_title</td>
<td>[&lsquo;个人&rsquo;,&lsquo;公司&rsquo;]</td>
<td>可以为空</td>
</tr>

<tr>
<td>order_fapiao_company</td>
<td>公司名称</td>
<td>可以为空</td>
</tr>

<tr>
<td>order_fapiao_content</td>
<td>发票内容</td>
<td>可以为空</td>
</tr>

<tr>
<td>consignee_addr</td>
<td>发货地址</td>
<td>可以为空</td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;total&quot;: 1,
    &quot;pagenum&quot;: &quot;1&quot;,
    &quot;goods&quot;: [
        {
            &quot;order_id&quot;: 47,
            &quot;user_id&quot;: 133,
            &quot;order_number&quot;: &quot;itcast-59e7502d7993d&quot;,
            &quot;order_price&quot;: 322,
            &quot;order_pay&quot;: &quot;1&quot;,
            &quot;is_send&quot;: &quot;是&quot;,
            &quot;trade_no&quot;: &quot;&quot;,
            &quot;order_fapiao_title&quot;: &quot;个人&quot;,
            &quot;order_fapiao_company&quot;: &quot;&quot;,
            &quot;order_fapiao_content&quot;: &quot;办公用品&quot;,
            &quot;consignee_addr&quot;: &quot;a:7:{s:6:\&quot;cgn_id\&quot;;i:1;s:7:\&quot;user_id\&quot;;i:133;s:8:\&quot;cgn_name\&quot;;s:9:\&quot;王二柱\&quot;;s:11:\&quot;cgn_address\&quot;;s:51:\&quot;北京市海淀区苏州街长远天地大厦305室\&quot;;s:7:\&quot;cgn_tel\&quot;;s:11:\&quot;13566771298\&quot;;s:8:\&quot;cgn_code\&quot;;s:6:\&quot;306810\&quot;;s:11:\&quot;delete_time\&quot;;N;}&quot;,
            &quot;pay_status&quot;: &quot;1&quot;,
            &quot;create_time&quot;: 1508331565,
            &quot;update_time&quot;: 1508331565
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-10-2-修改订单状态">1.10.2. 修改订单状态</h3>

<ul>
<li>请求路径：orders/:id</li>
<li>请求方法：put</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>订单 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>

<tr>
<td>is_send</td>
<td>订单是否发货</td>
<td>1:已经发货，0:未发货</td>
</tr>

<tr>
<td>order_pay</td>
<td>订单支付</td>
<td>支付方式 0 未支付 1 支付宝 2 微信 3 银行卡</td>
</tr>

<tr>
<td>order_price</td>
<td>订单价格</td>
<td></td>
</tr>

<tr>
<td>order_number</td>
<td>订单数量</td>
<td></td>
</tr>

<tr>
<td>pay_status</td>
<td>支付状态</td>
<td>订单状态： 0 未付款、1 已付款</td>
</tr>
</tbody>
</table>

<ul>
<li>请求数据说明

<ul>
<li>所有请求数据都是增量更新，如果参数不填写，就不会更新该字段</li>
</ul></li>

<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;order_id&quot;: 67,
    &quot;user_id&quot;: 1,
    &quot;order_number&quot;: &quot;itcast-g7kmck71vjaujfgoi&quot;,
    &quot;order_price&quot;: 20,
    &quot;order_pay&quot;: &quot;0&quot;,
    &quot;is_send&quot;: &quot;否&quot;,
    &quot;trade_no&quot;: &quot;&quot;,
    &quot;order_fapiao_title&quot;: &quot;个人&quot;,
    &quot;order_fapiao_company&quot;: &quot;&quot;,
    &quot;order_fapiao_content&quot;: &quot;&quot;,
    &quot;consignee_addr&quot;: &quot;&quot;,
    &quot;pay_status&quot;: &quot;0&quot;,
    &quot;create_time&quot;: 1512533560,
    &quot;update_time&quot;: 1512533560,
    &quot;goods&quot;: [
        {
            &quot;id&quot;: 82,
            &quot;order_id&quot;: 67,
            &quot;goods_id&quot;: 96,
            &quot;goods_price&quot;: 333,
            &quot;goods_number&quot;: 2,
            &quot;goods_total_price&quot;: 999
        },
        {
            &quot;id&quot;: 83,
            &quot;order_id&quot;: 67,
            &quot;goods_id&quot;: 95,
            &quot;goods_price&quot;: 666,
            &quot;goods_number&quot;: 5,
            &quot;goods_total_price&quot;: 999
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-10-3-查看订单详情">1.10.3. 查看订单详情</h3>

<ul>
<li>请求路径：orders/:id</li>
<li>请求方法：get</li>
<li>请求参数</li>
</ul>

<table>
<thead>
<tr>
<th>参数名</th>
<th>参数说明</th>
<th>备注</th>
</tr>
</thead>

<tbody>
<tr>
<td>id</td>
<td>订单 ID</td>
<td>不能为空<code>携带在url中</code></td>
</tr>
</tbody>
</table>

<ul>
<li><p>响应数据</p>

<pre><code>{
&quot;data&quot;: {
    &quot;order_id&quot;: 67,
    &quot;user_id&quot;: 1,
    &quot;order_number&quot;: &quot;itcast-g7kmck71vjaujfgoi&quot;,
    &quot;order_price&quot;: 20,
    &quot;order_pay&quot;: &quot;0&quot;,
    &quot;is_send&quot;: &quot;否&quot;,
    &quot;trade_no&quot;: &quot;&quot;,
    &quot;order_fapiao_title&quot;: &quot;个人&quot;,
    &quot;order_fapiao_company&quot;: &quot;&quot;,
    &quot;order_fapiao_content&quot;: &quot;&quot;,
    &quot;consignee_addr&quot;: &quot;&quot;,
    &quot;pay_status&quot;: &quot;0&quot;,
    &quot;create_time&quot;: 1512533560,
    &quot;update_time&quot;: 1512533560,
    &quot;goods&quot;: [
        {
            &quot;id&quot;: 82,
            &quot;order_id&quot;: 67,
            &quot;goods_id&quot;: 96,
            &quot;goods_price&quot;: 333,
            &quot;goods_number&quot;: 2,
            &quot;goods_total_price&quot;: 999
        },
        {
            &quot;id&quot;: 83,
            &quot;order_id&quot;: 67,
            &quot;goods_id&quot;: 95,
            &quot;goods_price&quot;: 666,
            &quot;goods_number&quot;: 5,
            &quot;goods_total_price&quot;: 999
        }
    ]
},
&quot;meta&quot;: {
    &quot;msg&quot;: &quot;获取成功&quot;,
    &quot;status&quot;: 200
}
}
</code></pre></li>
</ul>

<h3 id="1-10-4-修改地址">1.10.4. 修改地址</h3>

<ol>
<li><a href="https://github.com/iceyangcc/provinces-china">省市区/县联动效果 - 结合ElementUI的 el-cascader 组件</a></li>
</ol>

<h3 id="1-10-5-查看物流信息">1.10.5. 查看物流信息</h3>

<ul>
<li><p>请求路径：/kuaidi/:id</p></li>

<li><p>请求方法：get</p></li>

<li><p>供测试的物流单号：1106975712662</p></li>

<li><p>响应数据：</p>

<pre><code class="language-json">{
&quot;data&quot;: [
  {
    &quot;time&quot;: &quot;2018-05-10 09:39:00&quot;,
    &quot;ftime&quot;: &quot;2018-05-10 09:39:00&quot;,
    &quot;context&quot;: &quot;已签收,感谢使用顺丰,期待再次为您服务&quot;,
    &quot;location&quot;: &quot;&quot;
  },
  {
    &quot;time&quot;: &quot;2018-05-10 08:23:00&quot;,
    &quot;ftime&quot;: &quot;2018-05-10 08:23:00&quot;,
    &quot;context&quot;: &quot;[北京市]北京海淀育新小区营业点派件员 顺丰速运 95338正在为您派件&quot;,
    &quot;location&quot;: &quot;&quot;
  },
  {
    &quot;time&quot;: &quot;2018-05-10 07:32:00&quot;,
    &quot;ftime&quot;: &quot;2018-05-10 07:32:00&quot;,
    &quot;context&quot;: &quot;快件到达 [北京海淀育新小区营业点]&quot;,
    &quot;location&quot;: &quot;&quot;
  },
  {
    &quot;time&quot;: &quot;2018-05-10 02:03:00&quot;,
    &quot;ftime&quot;: &quot;2018-05-10 02:03:00&quot;,
    &quot;context&quot;: &quot;快件在[北京顺义集散中心]已装车,准备发往 [北京海淀育新小区营业点]&quot;,
    &quot;location&quot;: &quot;&quot;
  },
  {
    &quot;time&quot;: &quot;2018-05-09 23:05:00&quot;,
    &quot;ftime&quot;: &quot;2018-05-09 23:05:00&quot;,
    &quot;context&quot;: &quot;快件到达 [北京顺义集散中心]&quot;,
    &quot;location&quot;: &quot;&quot;
  },
  {
    &quot;time&quot;: &quot;2018-05-09 21:21:00&quot;,
    &quot;ftime&quot;: &quot;2018-05-09 21:21:00&quot;,
    &quot;context&quot;: &quot;快件在[北京宝胜营业点]已装车,准备发往 [北京顺义集散中心]&quot;,
    &quot;location&quot;: &quot;&quot;
  },
  {
    &quot;time&quot;: &quot;2018-05-09 13:07:00&quot;,
    &quot;ftime&quot;: &quot;2018-05-09 13:07:00&quot;,
    &quot;context&quot;: &quot;顺丰速运 已收取快件&quot;,
    &quot;location&quot;: &quot;&quot;
  },
  {
    &quot;time&quot;: &quot;2018-05-09 12:25:03&quot;,
    &quot;ftime&quot;: &quot;2018-05-09 12:25:03&quot;,
    &quot;context&quot;: &quot;卖家发货&quot;,
    &quot;location&quot;: &quot;&quot;
  },
  {
    &quot;time&quot;: &quot;2018-05-09 12:22:24&quot;,
    &quot;ftime&quot;: &quot;2018-05-09 12:22:24&quot;,
    &quot;context&quot;: &quot;您的订单将由HLA（北京海淀区清河中街店）门店安排发货。&quot;,
    &quot;location&quot;: &quot;&quot;
  },
  {
    &quot;time&quot;: &quot;2018-05-08 21:36:04&quot;,
    &quot;ftime&quot;: &quot;2018-05-08 21:36:04&quot;,
    &quot;context&quot;: &quot;商品已经下单&quot;,
    &quot;location&quot;: &quot;&quot;
  }
],
&quot;meta&quot;: { &quot;status&quot;: 200, &quot;message&quot;: &quot;获取物流信息成功！&quot; }
}
  
</code></pre></li>
</ul>

<h2 id="1-11-数据统计">1.11. 数据统计</h2>

<h3 id="1-11-1-基于时间统计的折线图">1.11.1.  基于时间统计的折线图</h3>

<ul>
<li><p>请求路径：reports/type/1</p></li>

<li><p>请求方法：get</p></li>

<li><p>响应数据</p></li>

<li><p>需要合并的选项</p>

<pre><code class="language-js">options: {
      title: {
        text: '用户来源'
      },
      tooltip: {
        trigger: 'axis',
        axisPointer: {
          type: 'cross',
          label: {
            backgroundColor: '#E9EEF3'
          }
        }
      },
      grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
      },
      xAxis: [
        {
          boundaryGap: false
        }
      ],
      yAxis: [
        {
          type: 'value'
        }
      ]
    }
</code></pre></li>
</ul>

                        </div>
						 
                        
<div class="post-archive">
    <ul class="post-copyright">
        <li><strong>原文作者：</strong><a rel="author" href="http://linxianqin.gitee.io">林贤钦</a></li>
        <li style="word-break:break-all"><strong>原文链接：</strong><a href="http://linxianqin.gitee.io/post/%E7%94%B5%E5%95%86%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0-API-%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/">http://linxianqin.gitee.io/post/%E7%94%B5%E5%95%86%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0-API-%E6%8E%A5%E5%8F%A3%E6%96%87%E6%A1%A3/</a></li>
        <li><strong>版权声明：</strong>本作品采用<a rel="license" href="https://linxianqin.gitee.io">知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议</a>进行许可，非商业转载请注明出处（作者，原文链接），商业转载请联系作者获得授权。</li>
    </ul>
</div>
<br/>



                        

<div class="post-archive">
    <h2>See Also</h2>
    <ul class="listing">
        
        <li><a href="/post/ssm&#43;vue%E8%B7%A8%E5%9F%9F%E8%A7%A3%E5%86%B3%E5%AE%9E%E4%BE%8B/">ssm&#43;vue跨域解决实例</a></li>
        
        <li><a href="/post/Mybatis%E5%88%86%E9%A1%B5%E6%8F%92%E4%BB%B6PageHelper/">Mybatis分页插件PageHelper</a></li>
        
        <li><a href="/post/Restful%E7%BB%9F%E4%B8%80Json%E5%B7%A5%E5%85%B7%E7%B1%BB%E5%B8%A6%E5%88%86%E9%A1%B5%E4%BF%A1%E6%81%AF/">Restful统一Json工具类，带分页信息</a></li>
        
        <li><a href="/post/intBeanUtilEx%E5%B7%A5%E5%85%B7%E7%B1%BB/">BeanUtilEx工具类解决Integer=0和sql.date异常的问题</a></li>
        
        <li><a href="/post/mybatis%E9%80%86%E5%90%91%E5%B7%A5%E7%A8%8B-%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90%E4%BB%A3%E7%A0%81/">mybatis逆向工程---自动生成代码</a></li>
        
    </ul>
</div>


                        <div class="post-meta meta-tags">
                            
                            <ul class="clearfix">
                                
                                <li><a href="http://linxianqin.gitee.io/tags/ssm">ssm</a></li>
                                
                                <li><a href="http://linxianqin.gitee.io/tags/vue">vue</a></li>
                                
                            </ul>
                            
                        </div>
                    </article>
                    
    

    
    
    <div class="post bg-white">
      <script src="https://utteranc.es/client.js"
            repo= "757610938/hugo-blogs-utterances"
            issue-term="pathname"
            theme="github-light"
            crossorigin="anonymous"
            async>
      </script>
    </div>
    
                </div>
            </div>
            <div id="secondary">
    <section class="widget">
        <form id="search" action="//www.google.com/search" method="get" accept-charset="utf-8" target="_blank" _lpchecked="1">
      
      <input type="text" name="q" maxlength="20" placeholder="Search">
      <input type="hidden" name="sitesearch" value="http://linxianqin.gitee.io">
      <button type="submit" class="submit icon-search"></button>
</form>
    </section>
    
    <section class="widget">
        <h3 class="widget-title">最近文章</h3>
<ul class="widget-list">
    
    <li>
        <a href="http://linxianqin.gitee.io/post/java-%E5%8F%8D%E5%B0%84/" title="Java 反射">Java 反射</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/java-%E9%93%BE%E8%A1%A8/" title="Java 链表">Java 链表</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E7%9F%AD%E4%BF%A1%E6%B3%A8%E5%86%8C%E5%92%8C%E5%BE%AE%E4%BF%A1%E7%99%BB%E5%BD%95%E7%9A%84%E5%AE%9E%E7%8E%B0/" title="短信注册和微信登录的实现">短信注册和微信登录的实现</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/OAuth2.0%E8%AE%A4%E8%AF%81%E6%8E%88%E6%9D%83%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95/" title="OAuth2.0认证授权单点登录">OAuth2.0认证授权单点登录</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/Nacos%E6%9C%8D%E5%8A%A1%E6%B3%A8%E5%86%8C%E4%B8%AD%E5%BF%83/" title="Nacos服务注册中心">Nacos服务注册中心</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/SpringCloud%E5%BE%AE%E6%9C%8D%E5%8A%A1/" title="SpringCloud微服务">SpringCloud微服务</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E9%98%BF%E9%87%8C%E4%BA%91%E8%A7%86%E9%A2%91%E7%82%B9%E6%92%AD%E6%9C%8D%E5%8A%A1/" title="阿里云视频点播服务前后端实现">阿里云视频点播服务前后端实现</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E9%98%9F%E5%88%97/" title="队列">队列</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E7%A8%80%E7%96%8F%E6%95%B0%E7%BB%84/" title="稀疏数组">稀疏数组</a>
    </li>
    
    <li>
        <a href="http://linxianqin.gitee.io/post/%E9%98%BF%E9%87%8C%E4%BA%91EasyExcel%E5%AE%9E%E7%8E%B0%E5%90%8E%E7%AB%AF%E5%AF%B9Excel%E7%9A%84%E8%AF%BB%E5%86%99%E6%93%8D%E4%BD%9C/" title="使用阿里云EasyExcel实现后端对Excel的读写操作">使用阿里云EasyExcel实现后端对Excel的读写操作</a>
    </li>
    
</ul>
    </section>

    

    <section class="widget">
        <h3 class="widget-title">分类</h3>
<ul class="widget-list">
    
    <li><a href="http://linxianqin.gitee.io/categories/JWT/">JWT (2)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/hugo/">hugo (2)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/java/">java (18)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/java8/">java8 (1)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/springCloud/">springCloud (2)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/springSecurity/">springSecurity (4)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/vue/">vue (5)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/yml/">yml (1)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">数据结构 (3)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/">软件测试 (1)</a></li>
    
    <li><a href="http://linxianqin.gitee.io/categories/%E9%98%BF%E9%87%8C%E4%BA%91/">阿里云 (4)</a></li>
    
</ul>
    </section>

    <section class="widget">
        <h3 class="widget-title">标签</h3>
<div class="tagcloud">
    
    <a href="http://linxianqin.gitee.io/tags/JWT/">JWT</a>
    
    <a href="http://linxianqin.gitee.io/tags/hugo/">hugo</a>
    
    <a href="http://linxianqin.gitee.io/tags/java/">java</a>
    
    <a href="http://linxianqin.gitee.io/tags/java8/">java8</a>
    
    <a href="http://linxianqin.gitee.io/tags/spring/">spring</a>
    
    <a href="http://linxianqin.gitee.io/tags/springBoot/">springBoot</a>
    
    <a href="http://linxianqin.gitee.io/tags/springCloud/">springCloud</a>
    
    <a href="http://linxianqin.gitee.io/tags/ssm/">ssm</a>
    
    <a href="http://linxianqin.gitee.io/tags/vue/">vue</a>
    
    <a href="http://linxianqin.gitee.io/tags/yml/">yml</a>
    
    <a href="http://linxianqin.gitee.io/tags/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/">数据结构</a>
    
    <a href="http://linxianqin.gitee.io/tags/%E8%BD%AF%E4%BB%B6%E6%B5%8B%E8%AF%95/">软件测试</a>
    
    <a href="http://linxianqin.gitee.io/tags/%E9%98%BF%E9%87%8C%E4%BA%91/">阿里云</a>
    
</div>
    </section>

    
<section class="widget">
    <h3 class="widget-title">友情链接</h3>
    <ul class="widget-list">
        
        <li>
            <a target="_blank" href="https://www.cnki.net" title="中国知网">中国知网</a>
        </li>
        
        <li>
            <a target="_blank" href="https://linxianqin.com" title="个人的另一个博客网站(国内加载慢)">个人的另一个博客网站(国内加载慢)</a>
        </li>
        
    </ul>
</section>


    <section class="widget">
        <h3 class="widget-title">其它</h3>
        <ul class="widget-list">
            <li><a href="http://linxianqin.gitee.io/index.xml">文章 RSS</a></li>
        </ul>
    </section>
</div>
        </div>
    </div>
</div>
<footer id="footer">
    <div class="container">
        &copy; 2020 <a href="http://linxianqin.gitee.io">林贤钦 By 林贤钦</a>.
        Powered by <a rel="nofollow noreferer noopener" href="https://gohugo.io" target="_blank">Hugo</a>.
        <a href="https://www.flysnow.org/" target="_blank">Theme</a> based on <a href="https://github.com/rujews/maupassant-hugo" target="_blank">maupassant</a>.
        
    </div>
</footer>


    
    <script type="text/javascript">
        
        (function () {
            $("pre code").parent().addClass("line-numbers")
        }());

        window.MathJax = {
            tex2jax: {
                inlineMath: [['$', '$']],
                processEscapes: true
                }
            };
    </script>
    <script type="text/javascript" src="/js/prism.js" async="true"></script>
    <script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML' async></script>


<a id="rocket" href="#top"></a>
<script type="text/javascript" src="/js/totop.js?v=0.0.0" async=""></script>

<script type="application/javascript">
var doNotTrack = false;
if (!doNotTrack) {
	window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
	ga('create', 'GA ID', 'auto');
	
	ga('send', 'pageview');
}
</script>
<script async src='https://www.google-analytics.com/analytics.js'></script>



    <script type="text/javascript" src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js" async></script>




</body>
</html>
